﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;
using SIMCObjetoNegocio;
using SIMCPresenter;

public partial class WebUserControls_WUCAtributos : System.Web.UI.UserControl, IConsultarAtributosView
{
    Usuario usuario;
    ConsultarAtributosPresenter m_Presenter;
    public event EventHandler<SearchEventArgs<int>> Buscar;

    protected override void OnInit(EventArgs e)
    {
        usuario = ((Usuario)Session["Usuario"]);
        m_Presenter = new ConsultarAtributosPresenter(this);
        base.OnInit(e);
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            if (Buscar != null)
            {
                Buscar(null, new SearchEventArgs<int>(usuario.Id));
            }
        }
    }

    private void LlenarAtributoEnPantalla(IList<ClasificacionPersonas> atributosSelecc)
    {
        lblTitulo.Text = atributosSelecc[0].DescripcionAtributo;

        foreach (ClasificacionPersonas atr in atributosSelecc)
        {
            Table tabla = new Table();
            TableRow row = new TableRow();
            TableCell cell = new TableCell();
            cell.Font.Bold = true;
            cell.Controls.Add(new Label { Text = atr.DescripcionValor });
            row.Cells.Add(cell);
            tabla.Rows.Add(row);
            tabla.Rows.Add(new TableRow());

            if ((atr.CalificadoresValoresDef != null) && (atr.CalificadoresValoresDef.Count > 0))
            {
                List<TableRow> rows = new List<TableRow>();

                TableCell cellValor = new TableCell();
                cellValor.Controls.Add(new Label { Text = "Valores", ForeColor = System.Drawing.Color.Blue });
                TableRow rowValor = new TableRow();
                rowValor.Cells.Add(cellValor);
                rows.Add(rowValor);
                for (int i = 0; i < atr.CalificadoresValoresDef.Count; i++)
                {
                    rowValor = new TableRow();
                    cellValor = new TableCell();
                    cellValor.Controls.Add(new Label { Text = atr.CalificadoresValoresDef[i].Descripcion + ": " });
                    rowValor.Cells.Add(cellValor);
                    if (i < atr.CalificadoresAtributo.Count)
                    {
                        cellValor = new TableCell();
                        cellValor.Controls.Add(new Label { Text = atr.CalificadoresValores[i] });
                        rowValor.Cells.Add(cellValor);
                    }
                    rows.Add(rowValor);
                }
                tabla.Rows.AddRange(rows.ToArray());
            }
            tabla.Rows.Add(new TableRow());
            if ((atr.CalificadoresAtributoDef != null) && (atr.CalificadoresAtributoDef.Count > 0))
            {
                List<TableRow> rows = new List<TableRow>();

                TableCell cellCalif = new TableCell();
                cellCalif.Controls.Add(new Label { Text = "Calificadores", ForeColor = System.Drawing.Color.Blue });
                TableRow rowCalif = new TableRow();
                rowCalif.Cells.Add(cellCalif);
                rows.Add(rowCalif);
                for (int i = 0; i < atr.CalificadoresAtributoDef.Count; i++)
                {
                    rowCalif = new TableRow();

                    cellCalif = new TableCell();
                    cellCalif.Controls.Add(new Label { Text = atr.CalificadoresAtributoDef[i].Descripcion + ": " });
                    rowCalif.Cells.Add(cellCalif);
                    if (i < atr.CalificadoresAtributo.Count)
                    {
                        if (atr.CalificadoresAtributoDef[i].TipoDato == TipoDeDato.ListaDeValores)
                        {
                            atr.CalificadoresAtributoDef[i].AtributoDeValores.Valores.Insert(0, new ValorDeAtributo { Valor = "-1", Descripcion = "N/A" });
                            cellCalif = new TableCell();
                            DropDownList dplValores = new DropDownList();
                            dplValores.DataTextField = "Descripcion";
                            dplValores.DataValueField = "valor";
                            dplValores.DataSource = atr.CalificadoresAtributoDef[i].AtributoDeValores.Valores;
                            dplValores.DataBind();
                            //dplValores.Enabled = false;
                            if ((atr.CalificadoresAtributo[i] == "Sin dato") || (atr.CalificadoresAtributo[i] == "Arreglo Incompleto"))
                            {
                                dplValores.SelectedValue = "-1";
                            }
                            else
                            {
                                dplValores.SelectedValue = atr.CalificadoresAtributo[i];
                            }
                            cellCalif.Controls.Add(dplValores);
                            rowCalif.Cells.Add(cellCalif);

                        }
                        else
                        {

                            cellCalif = new TableCell();
                            cellCalif.Controls.Add(new Label { Text = atr.CalificadoresAtributo[i] });
                            rowCalif.Cells.Add(cellCalif);
                        }
                    }
                    rows.Add(rowCalif);
                }

                tabla.Rows.AddRange(rows.ToArray());
            }
            division1.Controls.Add(tabla);
        }

    }

    public string AtributoSeleccionado
    {
        get
        {
            if ((SessionVariable)Session["Variable"] != null)
            {
                return ((SessionVariable)Session["Variable"]).valorTreeView;
            }
            else
            {
                return null;
            }
        }
        set
        {
            throw new NotImplementedException();
        }
    }

    public List<ClasificacionPersonas> Atributo
    {
        get
        {
            throw new NotImplementedException();
        }
        set
        {
            LlenarAtributoEnPantalla(value);
        }
    }

    public void MostrarMensaje(string p_Mensaje, bool p_Exito)
    {
        throw new NotImplementedException();
    }
}